import { fileURLToPath, URL } from 'node:url'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import { viteMockServe } from 'vite-plugin-mock'
// 导入path模块
import path from 'path'

// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
  // 加载环境变量
  const env = loadEnv(mode, process.cwd())
  
  return {
  plugins: [
    vue(),
    viteMockServe({
      mockPath: 'mock',
      // 根据环境变量确定是否启用mock服务
      enable: command === 'serve' && env.VITE_USE_MOCK === 'true',
      logger: false,
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  // 添加esbuild配置
  esbuild: {
    // 设置合适的目标以确保import.meta.env可用
    target: 'es2020',
    // 对于某些模块的处理进行特殊配置
    jsxFactory: 'h',
    jsxFragment: 'Fragment'
  },
  // 优化构建配置
  build: {
    // 关闭压缩以排除可能的错误源
    minify: false,
    // 分块策略调整
    rollupOptions: {
      output: {
        manualChunks: {}
      }
    }
  },
  server: {
    port: 5173,
    proxy: {
      '/api': {
        // 代理目标可通过环境变量配置，未配置则回退到本机8000端口
        target: env.VITE_API_BASE_URL || 'http://127.0.0.1:8000',
        changeOrigin: true,
        secure: false,
        ws: true,
        rewrite: (p) => p.replace(/^\/api/, '/api/v1')
      }
    }
  },
  define: {
    // 添加 Vue 特性标志定义
    __VUE_OPTIONS_API__: true,
    __VUE_PROD_DEVTOOLS__: false,
    __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false
  }
}
})
